//
//  DDHomdeTableViewController.swift
//  swift微博
//
//  Created by whitcast on 16/7/9.
//  Copyright © 2016年 whitcast. All rights reserved.
//

import UIKit
import SVProgressHUD

class DDHomdeTableViewController: DDVisitorViewControllor {
    
    //数据数组
    lazy var infosArr: [DDStatuesViewModel] = [DDStatuesViewModel]()
    //下拉刷新的视图
    lazy var pullDownVeiw: DDPullDownView = DDPullDownView()
    //标识符
    let identifier = "DDHomdeTableViewControllerCell"
    //菊花转
    lazy var activityIndicators: UIActivityIndicatorView = {
        
        let activity = UIActivityIndicatorView(activityIndicatorStyle: UIActivityIndicatorViewStyle.WhiteLarge)
        
        activity.color = UIColor.orangeColor()
        
        return activity
    }()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        if isLogin {
            //设置tableview
            self.setUpTableView()
            //菊花转
            SVProgressHUD.show()
            //网络请求
            loadDate()
            //设置UI
            setUpUI()
        }
       
    }
    
    //设置UI
    func setUpUI() {
        //下拉刷新的视图
        tableView.addSubview(pullDownVeiw)
        //约束
        pullDownVeiw.snp_makeConstraints { (make) -> Void in
            make.bottom.equalTo(tableView)
            make.leading.equalTo(tableView)
            make.width.equalTo(tableView.snp_width)
            make.height.equalTo(50)
        }
        pullDownVeiw.viewHeight = 50
        //添加事件
        pullDownVeiw.addTarget(self, action: "pullDownToRefresh", forControlEvents: .ValueChanged)

    }
    // MARK:--下拉视图的事件
    @objc private func pullDownToRefresh(){
        
        //修改未测试???
        
//        if pullDownVeiw.activity.isAnimating() {
//            return
//        }
        loadDate()
        
    }
    
    // MARK:--- 网络请求
    //网络请求
    func loadDate(){
        if isLogin == true {
            //数据源数据  根据菊花转的动画是否开启,确定传入的ispulled
            DDHomeTableVCViewModel.sharedHomeTableVCViewModel.getDateForTableViewSourse(activityIndicators.isAnimating(), callBack: { (isSuccess) -> () in
                if isSuccess {
                    //销毁菊花转
                    SVProgressHUD.dismiss()
                    //刷新列表
                    self.tableView.reloadData()
                    //取消上拉菊花的动画
                    self.activityIndicators.stopAnimating()
                    //更改下拉视图的转态
                    self.pullDownVeiw.viewState = .pullDownToRefresh
                    
                    
                }else {
                    print("网络请求失败")
                }
            })
            
        }else  {
            //未登录状态
            visitorView1?.setUPViewVC(nil, centerImgName: nil)
        }
        
        
    }
    //tableview的设置
    func setUpTableView() {
        
        //注册cell
        tableView.registerClass(DDHomeTableViewCell.self, forCellReuseIdentifier:identifier)
        //自动行高
        tableView.estimatedRowHeight = 200
        
        tableView.rowHeight = UITableViewAutomaticDimension
        //去除分割线
        tableView.separatorStyle = .None
        
    }
    
}

//拓展方法
// MARK:--数据源方法
extension DDHomdeTableViewController{
    
    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int{
        //根据viewmodel的方法来得到数据
        return DDHomeTableVCViewModel.sharedHomeTableVCViewModel.infosArr?.count ?? 0
    }
    
    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell{
        
        let cell = tableView.dequeueReusableCellWithIdentifier(identifier, forIndexPath: indexPath) as! DDHomeTableViewCell
        
        cell.statuesViewModel = DDHomeTableVCViewModel.sharedHomeTableVCViewModel.infosArr?[indexPath.row]
        //禁止选中状态
        cell.selectionStyle = .None
        
        return cell
        
    }
    //上啦刷新   即将显示某一行
    override func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
        //最后一行  将显示的时候  (上拉刷新)
        if indexPath.row == (DDHomeTableVCViewModel.sharedHomeTableVCViewModel.infosArr?.count)! - 1 && !self.activityIndicators.isAnimating(){
            
            tableView.tableFooterView = self.activityIndicators
            
            //开启动画
            self.activityIndicators.startAnimating()
            //请求数据
            DDHomeTableVCViewModel.sharedHomeTableVCViewModel.getDateForTableViewSourse(activityIndicators.isAnimating(), callBack: { (isSuccess) -> () in
                self.loadDate()
            }) 
        }
    }
}
